// 调试模式开关，开启调试模式后，将启用本地路由
import { Commit, StoreOptions } from 'vuex'
import { RouteConfig } from 'vue-router';
import { CONSTANT_ROUTE } from '@/router/index.js';

const DEBUG = true;

// 对非开发模式，禁用本地路由，防止打包时因忘记关闭调试开关导致生产版本问题
// !!!注意，不要修改此行代码。如需关闭或开启调试模式，请设置 DEBUG 变量
const DEBUG_MODE = process.env.NODE_ENV === 'development' ? DEBUG : false;

// 调试模式下，在控制台进行提示
if (DEBUG_MODE) {
    // eslint-disable-next-line no-console
    console.info('当前处于调试模式，将启用本地路由表！');
}

const route = {
    namespaced: true,
    state: {
        // 侧边导航栏的数据
        sideBar: DEBUG_MODE ? CONSTANT_ROUTE : [],
        // 侧边栏的收缩展开状态：false：展开；true：收缩
        sideBarCollapse: false,
        // 侧边栏的宽度
        sideBarItemWidth: '200',
        //当前登录人所有用的菜单
        currentPermissionRoute: [],
        currentPermissionMarks: null,

        // 当前所选菜单 true 就是业务菜单  false 就是系统和其他菜单
        isActiveMenu: true,

        businessMenu: [],//业务菜单数据

        // 页面内的换卡 这块 用在了 手机号查证件号 然后证件号登录 
        CardFromData: {},  //换卡数据
        isChangeCard: false, //是否换卡了

        // 多用户的侧边导航 是否展开
        isShowMultiUser: false,

        //卡列表 是否全屏按钮
        isUserInfoView: false,

        //用戶是否是vip
        userIsVIP: false,
        //是否显示 nav-head 组件
        isShowNavHead: false,
        // 数据库里存的菜单数据
        isCurrentMenuInfo: {},
        // 这个是全局变量 用于储存变量 保存状态的
        globalVariable: {
            accountInfoHeight: 190,//这个变量是修改卡列表的高度的
            isCoilIn: false,//是否进线 false  否  true 是
        },
        // 全局变量 2  只是在 关闭当前坐席时 清除数据
        globalVariableNum2: {
            createTime: 0,// 备忘录里的定时器 记录
        },
        // 交接班数据 
        SetPickerList: [],
        // 队列信息更新
        queueObj: {},
    },
    mutations: {
        // 初始化 视图大小
        //是否显示 nav-head 组件
        UPDATA_SHOW_NAV_HEAD(state: any, value: any) {
            state.isShowNavHead = value;
        },
        // 更新卡列表 是否全屏按钮
        UPDATA_USER_INFO_VIEW(state: any, valFlag: any) {
            state.isUserInfoView = valFlag;
        },
        // 页面内换卡的数据
        UPDATA_CARDDATA_FROM(state: any, cardFromInfo: any) {
            state.CardFromData = cardFromInfo;
        },
        // 页面内是否换卡标志
        UPDATA_CHANGE_CARD_FLAG(state: any, valFlag: any) {
            state.isChangeCard = valFlag
        },
        // 显示顶部导航栏
        SHOW_HEADER_BAR(state: any) {
            state.showHeaderBar = true;
        },
        // 隐藏顶部导航栏
        HIDE_HEADER_BAR(state: any) {
            state.showHeaderBar = false;
        },
        // 切换侧边栏的收缩展开状态
        TOGGLE_SIDE_BAR_COLLAPSE(state: any) {
            state.sideBarCollapse = !state.sideBarCollapse;
        },
        // // 展开侧边导航栏
        OPEN_SIDE_BAR(state: any) {
            state.sideBarCollapse = false;
        },
        // 关闭侧边导航栏
        CLOSE_SIDE_BAR(state: any) {
            state.sideBarCollapse = true;
        },

        /**
         * 设置顶部导航栏的数据
         * @param state
         * @param routes 导航栏的路由
         * routes:RouteConfig[] 
         */

        SET_HEADER_BAR(state: any, routes: RouteConfig[]) {
            state.headerBar.splice(0, state.headerBar.length, routes);
            // 默认激活顶部导航栏的第一项
            [state.currentHeaderRoute] = state.headerBar;
        },

        /**
         * 设置侧边导航栏的数据
         * @param state
         * @param routes 导航栏的路由
         */
        //修改侧边导航的宽度
        SET_SIDE_BAR_WIDTH(state: any, width: any) {
            state.sideBarItemWidth = width;
        },
        SET_SIDE_BAR(state: any, routes: RouteConfig[]) {
            // 把现有的sideBar 里的数据全剪切掉 然后把routes里的数据放进去
            state.sideBar.splice(0, state.sideBar.length, routes);
        },
        // 业务菜单数据修改 businessMenu
        SET_BUSS_MENU(state: any, routes: RouteConfig[]) {
            // 把现有的sideBar 里的数据全剪切掉 然后把routes里的数据放进去
            state.businessMenu = routes;
        },

        SET_PERMISSION_ROUTE(state: any, routes: RouteConfig[]) {
            state.currentPermissionRoute = routes;
        },
        SET_PERMISSION_MARKS(state: any, marks: any) {
            state.currentPermissionMarks = marks;
        },

        //修改侧边导航的宽度
        SET_MULTI_USER(state: any, value: any) {
            state.isShowMultiUser = value;
        },
        ////用戶是否是vip 
        UPDATA_USER_IS_VIP(state: any, value: any) {
            state.userIsVIP = value;
        },

        // 修改 当前菜单数据
        UPDATE_ISCURRENTER_INFO(state: any, isCurrentMenuInfo: any) {
            state.isCurrentMenuInfo = isCurrentMenuInfo;
        },
        // 修改 当前菜单top
        UPDATE_ACTIVE_MENU(state: any, newActiveMenu: any) {
            state.isActiveMenu = newActiveMenu;
        },
        // initial isActiveMenu
        // INITIAL_ISACTIVE_MENU(state: any) {
        //     state.isActiveMenu = true;
        // },
        // 改变全局的变量 修改状态用
        UPDATE_GLOBAL_VARIABLE(state: any, globalVariable: Object) {
            state.globalVariable = globalVariable;
        },
        // 改变全局的变量2 修改状态用
        UPDATE_GLOBAL_VARIABLENUM2(state: any, globalVariableNum2: Object) {
            state.globalVariableNum2 = globalVariableNum2;
        },
        //删除 updatedGlobalVariableNum2 里的 数据
        DELECT_GLOBAL_VARIABLENUM2(state: any) {
            state.globalVariableNum2 = {
                createTime: 0,
            }
        },
        // 修改 更新 SetPickerList 交接班数据 里 的数据
        UPDATE_SET_PICKER_LIST(state: any, SetPickerList: any) {
            for (let i = 0; i < SetPickerList.length; i++) {
                console.log('id', SetPickerList[i].id);
                if (!state.SetPickerList.some((item: any) => item.id === SetPickerList[i].id)) {
                    state.SetPickerList.push(SetPickerList[i])
                }
            }
            // state.SetPickerList = state.SetPickerList.concat(SetPickerList);
        },
        //  queueObj 
        UPDATE_SET_QUEUE(state: any, queueObj: Object) {
            state.queueObj = queueObj;

        },
        // 账号退出 清空state 
        DELECT_ALL_STATE_INITIAL(state: any) {
            state.isActiveMenu = true;
            state.isUserInfoView = false;
            state.isShowNavHead = false;
            state.sideBarItemWidth = '200';
            state.sideBarCollapse = false;
            state.isCurrentMenuInfo = {};
            state.SetPickerList = [];
            state.queueObj = {},
                state.globalVariable = {
                    accountInfoHeight: 190,
                    isCoilIn: false,
                };
        }
    },
    actions: {
        // delAllIsActiveMenu: (context: { commit: Commit, state: any }) => {
        //     context.commit("INITIAL_ISACTIVE_MENU");
        // },

        delAllStateInitial: (context: { commit: Commit, state: any }) => {
            context.commit("DELECT_ALL_STATE_INITIAL");
        },
        // 更新全局变量
        updatedGlobalVariableNum2: (context: { commit: Commit }, view: any) => {
            context.commit('UPDATE_GLOBAL_VARIABLENUM2', view)
        },
        // 更新 SetPickerList 
        updatedSetPickerList: (context: { commit: Commit }, view: any) => {
            context.commit('UPDATE_SET_PICKER_LIST', view)
        },
        // 更新 queueObj 
        updatedSetQueue: (context: { commit: Commit }, view: any) => {
            context.commit('UPDATE_SET_QUEUE', view)
        },
        // 删除 globalVariableNum2 里的数据
        delGlobalVariableNum2: (context: { commit: Commit, state: any }) => {
            context.commit("DELECT_GLOBAL_VARIABLENUM2");
        },
    },
};

export default route;
